﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading.Tasks;


using CapaNegocio;

namespace CapaPresentacion
{
    public partial class frmLibrodiario : Form
    {

        public int Idtrabajador;
        private bool IsNuevo;

        private bool IsEditar = false;

        private static frmLibrodiario _Instancia;
        public static frmLibrodiario GetInstancia()
        {
            if (_Instancia == null)
            {
                _Instancia = new frmLibrodiario();
            }
            return _Instancia;
        }


        public void Plancontable(string idplancontable, string cuenta, string nombrecuenta)
        {
            this.txtidplancontable.Text = idplancontable;
            this.txtCuenta.Text = cuenta;
            this.txtDenominacion.Text = nombrecuenta;
        }


        public frmLibrodiario()
        {
            InitializeComponent();
            this.ttMensaje.SetToolTip(this.txtCodigoLibro, "Ingrese el codigo del libro");
            this.txtidplancontable.Visible = false;
            this.txtCuenta.ReadOnly = true;
        }
        //Mostrar Mensaje de Confirmación
        private void MensajeOk(string mensaje)
        {
            MessageBox.Show(mensaje, "Sistema de Ventas", MessageBoxButtons.OK, MessageBoxIcon.Information);

        }


        //Mostrar Mensaje de Error
        private void MensajeError(string mensaje)
        {
            MessageBox.Show(mensaje, "Sistema de Ventas", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        //Limpiar todos los controles del formulario
        private void Limpiar()
        {
            this.txtnum_correlativo.Text = string.Empty;
        }

        //Habilitar los controles del formulario
        private void Habilitar(bool valor)
        {
            this.txtnum_correlativo.ReadOnly = !valor;
            this.txtGlosa.ReadOnly = !valor;
            this.txtNumero.ReadOnly = !valor;
            this.btnBuscarPcontable.Enabled = valor;
        }

        //Habilitar los botones
        private void Botones()
        {
            if (this.IsNuevo || this.IsEditar) //Alt + 124
            {
                this.Habilitar(true);
                this.btnNuevo.Enabled = false;
                this.btnGuardar.Enabled = true;
                this.btnEditar.Enabled = false;
                this.btnCancelar.Enabled = true;
            }
            else
            {
                this.Habilitar(false);
                this.btnNuevo.Enabled = true;
                this.btnGuardar.Enabled = false;
                this.btnEditar.Enabled = true;
                this.btnCancelar.Enabled = false;
            }

        }

        //Método para ocultar columnas
        private void OcultarColumnas()
        {
            this.dataListado.Columns[0].Visible = false;
            this.dataListado.Columns[1].Visible = false;
        }

        //Método Mostrar
        private void Mostrar()
        {
            this.dataListado.DataSource = NLibroDiario.MostrarLibroDiario();
            this.OcultarColumnas();
            lblTotal.Text = "Total de Registros: " + Convert.ToString(dataListado.Rows.Count);
        }

     /*   //Método BuscarNombre
        private void BuscarNombre()
        {
            this.dataListado.DataSource = NLibroDiario.Buscar(this.txtBuscar.Text);
            this.OcultarColumnas();
            lblTotal.Text = "Total de Registros: " + Convert.ToString(dataListado.Rows.Count);
        }*/
        private void frmLibrodiario_Load(object sender, EventArgs e)
        {
            //Para ubicar al formulario en la parte superior del contenedor  
            this.Top = 0;
            this.Left = 0;
            //Le decimos al DataGridView que no auto genere las columnas  
            //this.datalistado.AutoGenerateColumns = false;  
            //Llenamos el DataGridView con la información  
            //de todos nuestros Artículos
            //Deshabilita los controles  
            this.Habilitar(false);
            this.Mostrar();
            //Establece los botones  
            this.Botones();

        }

        private void txtIdpresentacion_TextChanged(object sender, EventArgs e)
        {

        }

        private void label4_Click(object sender, EventArgs e)
        {

        }

        private void label11_Click(object sender, EventArgs e)
        {

        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {

            this.IsNuevo = true;
            this.IsEditar = false;
            this.Botones();
            this.Limpiar();
            this.Habilitar(true);
            this.txtnum_correlativo.Focus();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                string rpta = "";
                if (this.txtnum_correlativo.Text == string.Empty)
                {
                    MensajeError("Falta ingresar algunos datos, serán remarcados");
                    errorIcono.SetError(txtnum_correlativo, "Ingrese un Nombre");
                }
                else
                {
                    if (this.IsNuevo)
                    {
                        rpta = NLibroDiario.Insertar(
                            Convert.ToInt32(this.txtnum_correlativo.Text),
                            this.dtFecha.Value,
                            this.txtGlosa.Text,
                            Convert.ToInt32(this.txtCodigoLibro.Text),
                            Convert.ToInt32(this.txtNumero.Text),
                            this.txtDocumento.Text,
                            this.txtCuenta.Text,
                            this.txtDenominacion.Text,
                            Convert.ToDecimal(this.txtDebe.Text),
                            Convert.ToDecimal(this.txtHaber.Text),
                            Idtrabajador
                            );

                    }/*
                    else
                    {
                        rpta = Npresentacion.Editar(Convert.ToInt32(this.txtIdpresentacion.Text),
                            this.txtNombre.Text.Trim().ToUpper(),
                            this.txtDescripcion.Text.Trim());
                    }*/

                    if (rpta.Equals("OK"))
                    {
                        if (this.IsNuevo)
                        {
                            this.MensajeOk("Se Insertó de forma correcta el registro");
                        }
                        else
                        {
                            this.MensajeOk("Se Actualizó de forma correcta el registro");
                        }
                    }
                    else
                    {
                        this.MensajeError(rpta);
                    }

                    this.IsNuevo = false;
                    this.IsEditar = false;
                    this.Botones();
                    this.Limpiar();
                    this.Mostrar();


                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }

        private void btnBuscarPcontable_Click(object sender, EventArgs e)
        {
            frmVista_Plancontable_Compras form = new frmVista_Plancontable_Compras();
            form.ShowDialog();
        }

        private void txtidplancontable_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
